<?php

require_once(realpath(dirname(__FILE__)) . '/../config.php');
require_once(realpath(dirname(__FILE__)) . '/../includes/common/ServiceFactory.php');
require_once(realpath(dirname(__FILE__)) . '/../includes/common/Validator.php');

Session::start();

$config = ServiceFactory::get("SystemConfiguration");
$commonService = ServiceFactory::get();
$userService = ServiceFactory::get("UserService");
$authService = ServiceFactory::get("AuthenticationService");

if(!$authService -> isAuthenticated())
    Response::redirect(Response::addQueryArg(array("back" => $_SERVER['REQUEST_URI']), "./login.php"));

$user = $authService -> getCurrentUser();

$currentFile = 'profile.php';
$action = $_REQUEST['action'];
$referer = $_POST['referer'];

if (isset($_POST['updateprofile']))
{
    RedirectMessage::removeMessage();
    
    if(isset($_FILES['upload-avatar']) && is_uploaded_file($_FILES['upload-avatar']['tmp_name']))
    {
        try
        {
            $avatarName = $commonService -> uploadAvatar($user -> getNickname());
            $config -> addNewAvatar(new Avatar($avatarName));
            $avatar = $commonService -> getAvatarByName($avatarName);
            
            $userService -> setUserAvatar($user -> getID(), $avatar);
            $uploadAvatar = true;
        }
        catch(Exception $ex)
        {
            RedirectMessage::info($ex -> getMessage(), "Error");
            Response::redirect($referer);
        }
        
    }
    
    $email = $_POST['email'];
    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $phone = $_POST['phone'];
    $address = $_POST['address'];
    $pass = $_POST['pw'];
    $pass1 = $_POST['pw1'];
    
    $bdMonth = $_POST['birthday-month'];
    $bdYear = $_POST['birthday-year'];
    $bdDay = $_POST['birthday-day'];
    
    if(!empty($pass) && $pass != $pass1)
        RedirectMessage::info("Mật khẩu nhập không giống nhau", "Error");
    elseif(!Validator::validate($email, "email"))
        RedirectMessage::info("Email không hợp lệ", "Error");
    elseif(!Validator::validate($phone, "phone"))
        RedirectMessage::info("Số điện thoại không hợp lệ", "Error");
    elseif(!Validator::validate($pass, "password"))
        RedirectMessage::info("Mật khẩu không hợp lệ, mật khẩu chỉ chứa các chữ cái và số", "Error");
    elseif(empty($bdMonth) || empty($bdYear) || empty($bdDay))
        RedirectMessage::info("Bạn chưa nhập ngày sinh", "Error");
    elseif(!Validator::validate($bdDay . "/" . $bdMonth . "/" . $bdYear,"date"))
        RedirectMessage::info("Ngày sinh không hợp lệ", "Error");

    if(RedirectMessage::hasMessage())
        Response::redirect($referer);
    
    try
    {
        $user = $authService -> getCurrentUser();
        
        $user -> setEmail($email);
        $user -> setFirstname($firstname);
        $user -> setLastname($lastname);
        $user -> setPhone($phone);
        $user -> setAddress($address);
        if(!empty($pass))
            $user -> setPassword(sha1($pass));
        
        $user -> setBirthday($bdYear . "/" . $bdMonth . "/" . $bdDay);
        
        if(!$uploadAvatar)
        {
            $checkavatar = $_POST['listAvatar'];
            if($checkavatar[0] == "0")
                $user -> setAvatarID("");
            else
                $user -> setAvatarID($checkavatar[0]);
        }
        
        $emoticonTheme = $_POST['listEmoticon'];
        $userService -> setUserOption($user -> getID(), "emoticon-theme", $_POST['listEmoticon'][0]);
        
        $userService -> updateUser($user);
        
        $userService -> setUserOption($user -> getID(), "show-email", isset($_POST['show-email'])?"1":"0");
        $userService -> setUserOption($user -> getID(), "show-avatar", isset($_POST['show-avatar'])?"1":"0");
        $userService -> setUserOption($user -> getID(), "save-message", isset($_POST['save-message'])?"1":"0");
        
        RedirectMessage::info("Thông tin mới đã được cập nhật");
    }
    catch(Exception $ex)
    {
        RedirectMessage::info($ex -> getMessage(), "Error");
    }


    Response::redirect($referer);
}

include("admin-header.php");
include("menu-bar.php");

if(RedirectMessage::hasMessage())
{
    InfoArea::showInfo(RedirectMessage::getMessage(), RedirectMessage::getMessage('title'), RedirectMessage::getMessage('type'));
    RedirectMessage::removeMessage();
}

?>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
    
    <input type="hidden" value="<?php echo ($_SERVER['REQUEST_URI']); ?>" name="referer" />
    <div class="ContentInner">
        <h2>Thông tin cá nhân</h2>
        <div class="Entry">
            <?php nowchat::userProperty($user, "nickname", "Username", "Tên đăng nhập (bạn không thể thay đổi)", 30, 25, true); ?>
        </div>
        <div class="Entry">
            <?php nowchat::userProperty($user, "email", "Email", "", 30); ?>
        </div>
        <div class="Entry">
            <?php nowchat::userProperty($user, "firstname", "Họ và tên đệm", "", 30); ?>
        </div>
        <div class="Entry">
            <?php nowchat::userProperty($user, "lastname", "Tên", "", 30); ?>
        </div>
        <div class="Entry">
            <?php nowchat::birthdaySelector($user, "birthday", "Ngày sinh"); ?>
        </div>
        <div class="Entry">
            <?php nowchat::userProperty($user, "phone", "Số điện thoại", "", 15, 12); ?>
        </div>
        <div class="Entry">
            <?php nowchat::userProperty($user, "address", "Địa chỉ", "", 45, 255); ?>
        </div>
        <h2>Tùy chọn</h2>
        <div class="Entry">
            <label></label>
            <?php nowchat::userOption($user, "show-email", "Hiển thị email"); ?>
        </div>
        <div class="Entry">
            <label></label>
            <?php nowchat::userOption($user, "show-avatar", "Hiển thị avatar"); ?>
        </div>
        <div class="Entry">
            <label></label>
            <?php nowchat::userOption($user, "save-message", "Lưu tất cả các tin nhắn"); ?>
        </div>
        <h2>Cá nhân</h2>
        <div class="Entry">
            <label for="pw">Mật khẩu</label>
            <input type="password" name="pw" id="pw" value="" size="16" maxlength="16" />
            <input type="password" name="pw1" id="pw1" value="" size="16" maxlength="16" />
            <small>Nhập 2 lần mật khẩu mới nếu bạn muốn thay đổi mật khẩu</small>
        </div>
        <h2>Chọn avatar</h2>
        <div class="Entry" id="avatarList">
            <?php 
                nowchat::listAvatar("listAvatar", "radio", $user -> getAvatarID(), 0, false, $user -> getNickname());
           ?>
            <script type="text/javascript">
                $(document).ready(function(){
                    var ul = $('ul#listAvatar');
                    <?php 
                            if($user -> getAvatarID() != null)
                            {
                                echo ("ul.append('<li><input type=\"radio\" value=\"0\" name=\"listAvatar[]\" /><div style=\"margin-top: 7px;margin-left:25px\"> No avatar</div></li>');");
                            }
                            else
                                echo "ul.append('<li><input type=\"radio\" value=\"0\" name=\"listAvatar[]\" checked=\"checked\" /><div style=\"margin-top: 7px;margin-left:25px\"> No avatar</div></li>');";
                       ?>
                })
           </script>
        </div>
        <div style="clear:both"></div>
        <div class="Entry">
            <?php nowchat::uploadFile("upload-avatar", "Upload avatar từ máy", "Chỉ hỗ trợ định dạng JPG, PNG, JPEG, GIF", 35); ?>
        </div>
        <h2>Chọn emoticon theme</h2>
        <div class="Entry EmoticonList" id="emoticonList">
            <?php
                nowchat::listEmoticon("listEmoticon", "radio", $userService -> getUserOption($user -> getID(), "emoticon-theme"));
            ?>
        </div>
        <div class="Command">
            <input type="submit" class="Button" name="updateprofile" id="updateprofile" value="Cập nhật"/>
        </div>
    </div>
</form>

<?php include("admin-footer.php") ?>
